const path = require('path');
/**
 * @type {import('webpack').Configuration}
 */
module.exports = {
  mode: 'development', // 模式 production development
  entry: path.resolve(__dirname, './src/index.ts'), // 入口文件
  output: {
    path: path.resolve(__dirname, './dist'), // 输出目录
    filename: '[name].[contenthash:6].js', // 输出文件
    clean: true, // 清理输出目录
    publicPath: '/', // 所有输出文件的公共路径
  },
  resolve: {
    extensions: ['.ts', '.js', '.json'], // 自动解析确定的扩展
  },
  // ts-loader --- typescript api 检查并解析ts文件 --- js --- webpack打包
  module: {
    rules: [
      {
        test: /\.js$/,
        use: [
          'babel-loader', // babel-loader
        ],
        exclude: /node_modules/, // 排除node_modules目录
      },
      {
        test: /\.ts$/,
        use: [
          // {
          //   loader: 'ts-loader', // ts-loader
          //   options: {
          //     transpileOnly: true, // 只转译，不检查
          //   }
          // },
          { 
            // babel也能对ts进行转译，而且只直接分析抽象语法树AST
            // 并不会做类型检查
            loader: 'babel-loader',
            options: {
              presets: [
                '@babel/preset-typescript'
              ],
            }
          }
        ],
        exclude: /node_modules/, // 排除node_modules目录
      }
    ]
  }
}